<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::MovingLeastSquares&lt; PointInT, PointOutT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_moving_least_squares.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1_moving_least_squares-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::MovingLeastSquares&lt; PointInT, PointOutT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="classpcl_1_1_moving_least_squares.html" title="MovingLeastSquares represent an implementation of the MLS (Moving Least Squares) algorithm for data s...">MovingLeastSquares</a> represent an implementation of the MLS (Moving Least Squares) algorithm for data smoothing and improved normal estimation. It also contains methods for upsampling the resulting cloud based on the parametric fit. Reference paper: "Computing and Rendering Point Set Surfaces" by Marc Alexa, Johannes Behr, Daniel Cohen-Or, Shachar Fleishman, David Levin and Claudio T. Silva www.sci.utah.edu/~shachar/Publications/crpss.pdf  
 <a href="classpcl_1_1_moving_least_squares.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="mls_8h_source.html">mls.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::MovingLeastSquares&lt; PointInT, PointOutT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_moving_least_squares.png" usemap="#pcl::MovingLeastSquares_3C_20PointInT_2C_20PointOutT_20_3E_map" alt=""/>
  <map id="pcl::MovingLeastSquares_3C_20PointInT_2C_20PointOutT_20_3E_map" name="pcl::MovingLeastSquares_3C_20PointInT_2C_20PointOutT_20_3E_map">
<area href="classpcl_1_1_cloud_surface_processing.html" title="CloudSurfaceProcessing represents the base class for algorithms that takes a point cloud as input and..." alt="pcl::CloudSurfaceProcessing&lt; PointInT, PointOutT &gt;" shape="rect" coords="0,56,309,80"/>
<area href="classpcl_1_1_p_c_l_base.html" alt="pcl::PCLBase&lt; PointInT &gt;" shape="rect" coords="0,0,309,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html">MLSResult</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure used to store the results of the MLS fitting  <a href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares_1_1_m_l_s_voxel_grid.html">MLSVoxelGrid</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A minimalistic implementation of a voxel grid, necessary for the point cloud upsampling  <a href="classpcl_1_1_moving_least_squares_1_1_m_l_s_voxel_grid.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:aa444c1e8df3498adba7f25918f4a961c"><td class="memItemLeft" align="right" valign="top"><a id="aa444c1e8df3498adba7f25918f4a961c"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>UpsamplingMethod</b> { <br />
&#160;&#160;<b>NONE</b>
, <b>DISTINCT_CLOUD</b>
, <b>SAMPLE_LOCAL_PLANE</b>
, <b>RANDOM_UNIFORM_DENSITY</b>
, <br />
&#160;&#160;<b>VOXEL_GRID_DILATION</b>
<br />
 }</td></tr>
<tr class="separator:aa444c1e8df3498adba7f25918f4a961c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a8aa4f38a1ee5548a1b99c755a269b3"><td class="memItemLeft" align="right" valign="top"><a id="a9a8aa4f38a1ee5548a1b99c755a269b3"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_moving_least_squares.html">MovingLeastSquares</a>&lt; PointInT, PointOutT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a9a8aa4f38a1ee5548a1b99c755a269b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ca27f5d5ab42f4d66bcd149121cc388"><td class="memItemLeft" align="right" valign="top"><a id="a5ca27f5d5ab42f4d66bcd149121cc388"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_moving_least_squares.html">MovingLeastSquares</a>&lt; PointInT, PointOutT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a5ca27f5d5ab42f4d66bcd149121cc388"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ceb63c0ef071ebb49c6cc51a941636a"><td class="memItemLeft" align="right" valign="top"><a id="a3ceb63c0ef071ebb49c6cc51a941636a"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a3ceb63c0ef071ebb49c6cc51a941636a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad998895a52d4d5cfa1a904f004b0c062"><td class="memItemLeft" align="right" valign="top"><a id="ad998895a52d4d5cfa1a904f004b0c062"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; PointInT &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:ad998895a52d4d5cfa1a904f004b0c062"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34c43c0ece6dff1a5ca06cc0fd77ef54"><td class="memItemLeft" align="right" valign="top"><a id="a34c43c0ece6dff1a5ca06cc0fd77ef54"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_normal.html">pcl::Normal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>NormalCloud</b></td></tr>
<tr class="separator:a34c43c0ece6dff1a5ca06cc0fd77ef54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab308e0d1c1f08e9371791436f84a0d0e"><td class="memItemLeft" align="right" valign="top"><a id="ab308e0d1c1f08e9371791436f84a0d0e"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_normal.html">pcl::Normal</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>NormalCloudPtr</b></td></tr>
<tr class="separator:ab308e0d1c1f08e9371791436f84a0d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a081a1b058e04212bcf410d39e23d2aec"><td class="memItemLeft" align="right" valign="top"><a id="a081a1b058e04212bcf410d39e23d2aec"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointOutT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudOut</b></td></tr>
<tr class="separator:a081a1b058e04212bcf410d39e23d2aec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc89cf0ec094ec97dc596c1cfa12eb98"><td class="memItemLeft" align="right" valign="top"><a id="abc89cf0ec094ec97dc596c1cfa12eb98"></a>
typedef PointCloudOut::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudOutPtr</b></td></tr>
<tr class="separator:abc89cf0ec094ec97dc596c1cfa12eb98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4c339a7baeb4accdd08f892016d0145"><td class="memItemLeft" align="right" valign="top"><a id="ac4c339a7baeb4accdd08f892016d0145"></a>
typedef PointCloudOut::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudOutConstPtr</b></td></tr>
<tr class="separator:ac4c339a7baeb4accdd08f892016d0145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4032189616a8e0c99aa8bdc2fa705537"><td class="memItemLeft" align="right" valign="top"><a id="a4032189616a8e0c99aa8bdc2fa705537"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudIn</b></td></tr>
<tr class="separator:a4032189616a8e0c99aa8bdc2fa705537"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a981b3179a1140b00e9ae85d785f0b366"><td class="memItemLeft" align="right" valign="top"><a id="a981b3179a1140b00e9ae85d785f0b366"></a>
typedef PointCloudIn::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudInPtr</b></td></tr>
<tr class="separator:a981b3179a1140b00e9ae85d785f0b366"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1efc3ba0c7ca630567b965fffaccce1"><td class="memItemLeft" align="right" valign="top"><a id="ab1efc3ba0c7ca630567b965fffaccce1"></a>
typedef PointCloudIn::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudInConstPtr</b></td></tr>
<tr class="separator:ab1efc3ba0c7ca630567b965fffaccce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32e4abb29961e72584fd7dcd69e8133e"><td class="memItemLeft" align="right" valign="top"><a id="a32e4abb29961e72584fd7dcd69e8133e"></a>
typedef boost::function&lt; int(int, double, std::vector&lt; int &gt; &amp;, std::vector&lt; float &gt; &amp;)&gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SearchMethod</b></td></tr>
<tr class="separator:a32e4abb29961e72584fd7dcd69e8133e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_cloud_surface_processing"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_cloud_surface_processing')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_cloud_surface_processing.html">pcl::CloudSurfaceProcessing&lt; PointInT, PointOutT &gt;</a></td></tr>
<tr class="memitem:a6b65f01ec6ef58e182a0c31a521d9867 inherit pub_types_classpcl_1_1_cloud_surface_processing"><td class="memItemLeft" align="right" valign="top"><a id="a6b65f01ec6ef58e182a0c31a521d9867"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_cloud_surface_processing.html">CloudSurfaceProcessing</a>&lt; PointInT, PointOutT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a6b65f01ec6ef58e182a0c31a521d9867 inherit pub_types_classpcl_1_1_cloud_surface_processing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9146a40e86bd9d06252ef7de106d3d5 inherit pub_types_classpcl_1_1_cloud_surface_processing"><td class="memItemLeft" align="right" valign="top"><a id="ad9146a40e86bd9d06252ef7de106d3d5"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_cloud_surface_processing.html">CloudSurfaceProcessing</a>&lt; PointInT, PointOutT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:ad9146a40e86bd9d06252ef7de106d3d5 inherit pub_types_classpcl_1_1_cloud_surface_processing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointInT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a379330b0b1dacaa668d165f94930749c"><td class="memItemLeft" align="right" valign="top"><a id="a379330b0b1dacaa668d165f94930749c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a379330b0b1dacaa668d165f94930749c">MovingLeastSquares</a> ()</td></tr>
<tr class="memdesc:a379330b0b1dacaa668d165f94930749c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a379330b0b1dacaa668d165f94930749c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a085971b0da5e600bc65d11dd67704845"><td class="memItemLeft" align="right" valign="top"><a id="a085971b0da5e600bc65d11dd67704845"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a085971b0da5e600bc65d11dd67704845">~MovingLeastSquares</a> ()</td></tr>
<tr class="memdesc:a085971b0da5e600bc65d11dd67704845"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a085971b0da5e600bc65d11dd67704845"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5983412b9e7efee57f491d1c54da21d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a5983412b9e7efee57f491d1c54da21d6">setComputeNormals</a> (bool compute_normals)</td></tr>
<tr class="memdesc:a5983412b9e7efee57f491d1c54da21d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether the algorithm should also store the normals computed  <a href="classpcl_1_1_moving_least_squares.html#a5983412b9e7efee57f491d1c54da21d6">更多...</a><br /></td></tr>
<tr class="separator:a5983412b9e7efee57f491d1c54da21d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0865f62d90c9fb0f45dd96e587fe84e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ab0865f62d90c9fb0f45dd96e587fe84e">setSearchMethod</a> (const KdTreePtr &amp;tree)</td></tr>
<tr class="memdesc:ab0865f62d90c9fb0f45dd96e587fe84e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the search object.  <a href="classpcl_1_1_moving_least_squares.html#ab0865f62d90c9fb0f45dd96e587fe84e">更多...</a><br /></td></tr>
<tr class="separator:ab0865f62d90c9fb0f45dd96e587fe84e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7ce226e11ebd75b8cc735c768e3d71e"><td class="memItemLeft" align="right" valign="top"><a id="ae7ce226e11ebd75b8cc735c768e3d71e"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ae7ce226e11ebd75b8cc735c768e3d71e">getSearchMethod</a> ()</td></tr>
<tr class="memdesc:ae7ce226e11ebd75b8cc735c768e3d71e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the search method used. <br /></td></tr>
<tr class="separator:ae7ce226e11ebd75b8cc735c768e3d71e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3127676a2bb32a32164a181bfbbf7589"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a3127676a2bb32a32164a181bfbbf7589">setPolynomialOrder</a> (int order)</td></tr>
<tr class="memdesc:a3127676a2bb32a32164a181bfbbf7589"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the order of the polynomial to be fit.  <a href="classpcl_1_1_moving_least_squares.html#a3127676a2bb32a32164a181bfbbf7589">更多...</a><br /></td></tr>
<tr class="separator:a3127676a2bb32a32164a181bfbbf7589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a774074cfad90821ef4ae61dac558342c"><td class="memItemLeft" align="right" valign="top"><a id="a774074cfad90821ef4ae61dac558342c"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a774074cfad90821ef4ae61dac558342c">getPolynomialOrder</a> ()</td></tr>
<tr class="memdesc:a774074cfad90821ef4ae61dac558342c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the order of the polynomial to be fit. <br /></td></tr>
<tr class="separator:a774074cfad90821ef4ae61dac558342c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec89a5e1f9001476eb1fc2b8db63d650"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#aec89a5e1f9001476eb1fc2b8db63d650">setPolynomialFit</a> (bool polynomial_fit)</td></tr>
<tr class="memdesc:aec89a5e1f9001476eb1fc2b8db63d650"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether the surface and normal are approximated using a polynomial, or only via tangent estimation.  <a href="classpcl_1_1_moving_least_squares.html#aec89a5e1f9001476eb1fc2b8db63d650">更多...</a><br /></td></tr>
<tr class="separator:aec89a5e1f9001476eb1fc2b8db63d650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9125a4e1aa5647b0e5ac282a8e01cef"><td class="memItemLeft" align="right" valign="top"><a id="ac9125a4e1aa5647b0e5ac282a8e01cef"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ac9125a4e1aa5647b0e5ac282a8e01cef">getPolynomialFit</a> ()</td></tr>
<tr class="memdesc:ac9125a4e1aa5647b0e5ac282a8e01cef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the polynomial_fit value (true if the surface and normal are approximated using a polynomial). <br /></td></tr>
<tr class="separator:ac9125a4e1aa5647b0e5ac282a8e01cef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5e4d16c7aae631ef02bf1ee843bd55e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ae5e4d16c7aae631ef02bf1ee843bd55e">setSearchRadius</a> (double radius)</td></tr>
<tr class="memdesc:ae5e4d16c7aae631ef02bf1ee843bd55e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the sphere radius that is to be used for determining the k-nearest neighbors used for fitting.  <a href="classpcl_1_1_moving_least_squares.html#ae5e4d16c7aae631ef02bf1ee843bd55e">更多...</a><br /></td></tr>
<tr class="separator:ae5e4d16c7aae631ef02bf1ee843bd55e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79088f22a05bad7793018b3628545154"><td class="memItemLeft" align="right" valign="top"><a id="a79088f22a05bad7793018b3628545154"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a79088f22a05bad7793018b3628545154">getSearchRadius</a> ()</td></tr>
<tr class="memdesc:a79088f22a05bad7793018b3628545154"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the sphere radius used for determining the k-nearest neighbors. <br /></td></tr>
<tr class="separator:a79088f22a05bad7793018b3628545154"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a026b12106161eba174b69ef67d769950"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a026b12106161eba174b69ef67d769950">setSqrGaussParam</a> (double sqr_gauss_param)</td></tr>
<tr class="memdesc:a026b12106161eba174b69ef67d769950"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the parameter used for distance based weighting of neighbors (the square of the search radius works best in general).  <a href="classpcl_1_1_moving_least_squares.html#a026b12106161eba174b69ef67d769950">更多...</a><br /></td></tr>
<tr class="separator:a026b12106161eba174b69ef67d769950"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0de2cd297da3db1daef0b090a6e54a67"><td class="memItemLeft" align="right" valign="top"><a id="a0de2cd297da3db1daef0b090a6e54a67"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a0de2cd297da3db1daef0b090a6e54a67">getSqrGaussParam</a> () const</td></tr>
<tr class="memdesc:a0de2cd297da3db1daef0b090a6e54a67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parameter for distance based weighting of neighbors. <br /></td></tr>
<tr class="separator:a0de2cd297da3db1daef0b090a6e54a67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac29ad97b98353d64ce64e2ff924f7d20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ac29ad97b98353d64ce64e2ff924f7d20">setUpsamplingMethod</a> (UpsamplingMethod method)</td></tr>
<tr class="memdesc:ac29ad97b98353d64ce64e2ff924f7d20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the upsampling method to be used  <a href="classpcl_1_1_moving_least_squares.html#ac29ad97b98353d64ce64e2ff924f7d20">更多...</a><br /></td></tr>
<tr class="separator:ac29ad97b98353d64ce64e2ff924f7d20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fc924b0b40e6be32f094aa774ed3809"><td class="memItemLeft" align="right" valign="top"><a id="a8fc924b0b40e6be32f094aa774ed3809"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a8fc924b0b40e6be32f094aa774ed3809">setDistinctCloud</a> (PointCloudInConstPtr distinct_cloud)</td></tr>
<tr class="memdesc:a8fc924b0b40e6be32f094aa774ed3809"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the distinct cloud used for the DISTINCT_CLOUD upsampling method. <br /></td></tr>
<tr class="separator:a8fc924b0b40e6be32f094aa774ed3809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a732d3468058eb79d4e2a42de3c9b0ea2"><td class="memItemLeft" align="right" valign="top"><a id="a732d3468058eb79d4e2a42de3c9b0ea2"></a>
PointCloudInConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a732d3468058eb79d4e2a42de3c9b0ea2">getDistinctCloud</a> ()</td></tr>
<tr class="memdesc:a732d3468058eb79d4e2a42de3c9b0ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the distinct cloud used for the DISTINCT_CLOUD upsampling method. <br /></td></tr>
<tr class="separator:a732d3468058eb79d4e2a42de3c9b0ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8efa7671c4b24700c2f22f63affdce9b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a8efa7671c4b24700c2f22f63affdce9b">setUpsamplingRadius</a> (double radius)</td></tr>
<tr class="memdesc:a8efa7671c4b24700c2f22f63affdce9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the radius of the circle in the local point plane that will be sampled  <a href="classpcl_1_1_moving_least_squares.html#a8efa7671c4b24700c2f22f63affdce9b">更多...</a><br /></td></tr>
<tr class="separator:a8efa7671c4b24700c2f22f63affdce9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5de9b3c34f261b82847cf9576d7749b0"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a5de9b3c34f261b82847cf9576d7749b0">getUpsamplingRadius</a> ()</td></tr>
<tr class="memdesc:a5de9b3c34f261b82847cf9576d7749b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the radius of the circle in the local point plane that will be sampled  <a href="classpcl_1_1_moving_least_squares.html#a5de9b3c34f261b82847cf9576d7749b0">更多...</a><br /></td></tr>
<tr class="separator:a5de9b3c34f261b82847cf9576d7749b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2c814527e15d4d3ff9a5ba5864b842d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ac2c814527e15d4d3ff9a5ba5864b842d">setUpsamplingStepSize</a> (double step_size)</td></tr>
<tr class="memdesc:ac2c814527e15d4d3ff9a5ba5864b842d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the step size for the local plane sampling  <a href="classpcl_1_1_moving_least_squares.html#ac2c814527e15d4d3ff9a5ba5864b842d">更多...</a><br /></td></tr>
<tr class="separator:ac2c814527e15d4d3ff9a5ba5864b842d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f9392a84fd3363a30ecfb8ccde17d3e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a3f9392a84fd3363a30ecfb8ccde17d3e">getUpsamplingStepSize</a> ()</td></tr>
<tr class="memdesc:a3f9392a84fd3363a30ecfb8ccde17d3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the step size for the local plane sampling  <a href="classpcl_1_1_moving_least_squares.html#a3f9392a84fd3363a30ecfb8ccde17d3e">更多...</a><br /></td></tr>
<tr class="separator:a3f9392a84fd3363a30ecfb8ccde17d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c4b8a31a83259d20754e5cc57cb85ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a5c4b8a31a83259d20754e5cc57cb85ae">setPointDensity</a> (int desired_num_points_in_radius)</td></tr>
<tr class="memdesc:a5c4b8a31a83259d20754e5cc57cb85ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the parameter that specifies the desired number of points within the search radius  <a href="classpcl_1_1_moving_least_squares.html#a5c4b8a31a83259d20754e5cc57cb85ae">更多...</a><br /></td></tr>
<tr class="separator:a5c4b8a31a83259d20754e5cc57cb85ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0fca003d2d4b9d2f4fd5cbb775c0cec"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ae0fca003d2d4b9d2f4fd5cbb775c0cec">getPointDensity</a> ()</td></tr>
<tr class="memdesc:ae0fca003d2d4b9d2f4fd5cbb775c0cec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parameter that specifies the desired number of points within the search radius  <a href="classpcl_1_1_moving_least_squares.html#ae0fca003d2d4b9d2f4fd5cbb775c0cec">更多...</a><br /></td></tr>
<tr class="separator:ae0fca003d2d4b9d2f4fd5cbb775c0cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91ca6567348b72285196be7c28618182"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a91ca6567348b72285196be7c28618182">setDilationVoxelSize</a> (float voxel_size)</td></tr>
<tr class="memdesc:a91ca6567348b72285196be7c28618182"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the voxel size for the voxel grid  <a href="classpcl_1_1_moving_least_squares.html#a91ca6567348b72285196be7c28618182">更多...</a><br /></td></tr>
<tr class="separator:a91ca6567348b72285196be7c28618182"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad949e7434b0d90828c903fe1ff425ee7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ad949e7434b0d90828c903fe1ff425ee7">getDilationVoxelSize</a> ()</td></tr>
<tr class="memdesc:ad949e7434b0d90828c903fe1ff425ee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the voxel size for the voxel grid  <a href="classpcl_1_1_moving_least_squares.html#ad949e7434b0d90828c903fe1ff425ee7">更多...</a><br /></td></tr>
<tr class="separator:ad949e7434b0d90828c903fe1ff425ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08fd0701e8ab705e17c2704ae64601c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a08fd0701e8ab705e17c2704ae64601c9">setDilationIterations</a> (int iterations)</td></tr>
<tr class="memdesc:a08fd0701e8ab705e17c2704ae64601c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the number of dilation steps of the voxel grid  <a href="classpcl_1_1_moving_least_squares.html#a08fd0701e8ab705e17c2704ae64601c9">更多...</a><br /></td></tr>
<tr class="separator:a08fd0701e8ab705e17c2704ae64601c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22dee9d7438cb0e792283f10bdf657b7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a22dee9d7438cb0e792283f10bdf657b7">getDilationIterations</a> ()</td></tr>
<tr class="memdesc:a22dee9d7438cb0e792283f10bdf657b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of dilation steps of the voxel grid  <a href="classpcl_1_1_moving_least_squares.html#a22dee9d7438cb0e792283f10bdf657b7">更多...</a><br /></td></tr>
<tr class="separator:a22dee9d7438cb0e792283f10bdf657b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad168be16626ea58d1c31c321bd1d980f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ad168be16626ea58d1c31c321bd1d980f">process</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;output)</td></tr>
<tr class="memdesc:ad168be16626ea58d1c31c321bd1d980f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base method for surface reconstruction for all points given in &lt;setInputCloud (), setIndices ()&gt;  <a href="classpcl_1_1_moving_least_squares.html#ad168be16626ea58d1c31c321bd1d980f">更多...</a><br /></td></tr>
<tr class="separator:ad168be16626ea58d1c31c321bd1d980f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d4bbfe0895f35235235247dc296c994"><td class="memItemLeft" align="right" valign="top"><a id="a0d4bbfe0895f35235235247dc296c994"></a>
PointIndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a0d4bbfe0895f35235235247dc296c994">getCorrespondingIndices</a> ()</td></tr>
<tr class="memdesc:a0d4bbfe0895f35235235247dc296c994"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the set of indices with each point in output having the corresponding point in input <br /></td></tr>
<tr class="separator:a0d4bbfe0895f35235235247dc296c994"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_cloud_surface_processing"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_cloud_surface_processing')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_cloud_surface_processing.html">pcl::CloudSurfaceProcessing&lt; PointInT, PointOutT &gt;</a></td></tr>
<tr class="memitem:af9363cc7880440f899bae9648313e6f2 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="memItemLeft" align="right" valign="top"><a id="af9363cc7880440f899bae9648313e6f2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_cloud_surface_processing.html#af9363cc7880440f899bae9648313e6f2">CloudSurfaceProcessing</a> ()</td></tr>
<tr class="memdesc:af9363cc7880440f899bae9648313e6f2 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:af9363cc7880440f899bae9648313e6f2 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc69a434ecb1437c0b3379d3091d8e09 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="memItemLeft" align="right" valign="top"><a id="adc69a434ecb1437c0b3379d3091d8e09"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_cloud_surface_processing.html#adc69a434ecb1437c0b3379d3091d8e09">~CloudSurfaceProcessing</a> ()</td></tr>
<tr class="memdesc:adc69a434ecb1437c0b3379d3091d8e09 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:adc69a434ecb1437c0b3379d3091d8e09 inherit pub_methods_classpcl_1_1_cloud_surface_processing"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const PointInT &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override PointCloud operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a8450a26f10b00753056f01eef9042c1f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a8450a26f10b00753056f01eef9042c1f">searchForNeighbors</a> (int index, std::vector&lt; int &gt; &amp;indices, std::vector&lt; float &gt; &amp;sqr_distances) const</td></tr>
<tr class="memdesc:a8450a26f10b00753056f01eef9042c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for the closest nearest neighbors of a given point using a radius search  <a href="classpcl_1_1_moving_least_squares.html#a8450a26f10b00753056f01eef9042c1f">更多...</a><br /></td></tr>
<tr class="separator:a8450a26f10b00753056f01eef9042c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af89da1f47e32a533e5c0c75d1a244a74"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#af89da1f47e32a533e5c0c75d1a244a74">computeMLSPointNormal</a> (int index, const std::vector&lt; int &gt; &amp;nn_indices, std::vector&lt; float &gt; &amp;nn_sqr_dists, <a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;projected_points, <a class="el" href="classpcl_1_1_point_cloud.html">NormalCloud</a> &amp;projected_points_normals, <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &amp;corresponding_input_indices, <a class="el" href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html">MLSResult</a> &amp;mls_result) const</td></tr>
<tr class="memdesc:af89da1f47e32a533e5c0c75d1a244a74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smooth a given point and its neighborghood using Moving Least Squares.  <a href="classpcl_1_1_moving_least_squares.html#af89da1f47e32a533e5c0c75d1a244a74">更多...</a><br /></td></tr>
<tr class="separator:af89da1f47e32a533e5c0c75d1a244a74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e2f25248f7f01a111763877698e06e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">projectPointToMLSSurface</a> (float &amp;u_disp, float &amp;v_disp, Eigen::Vector3d &amp;u_axis, Eigen::Vector3d &amp;v_axis, Eigen::Vector3d &amp;n_axis, Eigen::Vector3d &amp;mean, float &amp;curvature, Eigen::VectorXd &amp;c_vec, int num_neighbors, PointOutT &amp;result_point, <a class="el" href="structpcl_1_1_normal.html">pcl::Normal</a> &amp;result_normal) const</td></tr>
<tr class="memdesc:a0e2f25248f7f01a111763877698e06e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fits a point (sample point) given in the local plane coordinates of an input point (query point) to the MLS surface of the input point  <a href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">更多...</a><br /></td></tr>
<tr class="separator:a0e2f25248f7f01a111763877698e06e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a596b1e2184766db3681a6d9059157cc7"><td class="memItemLeft" align="right" valign="top"><a id="a596b1e2184766db3681a6d9059157cc7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>copyMissingFields</b> (const PointInT &amp;point_in, PointOutT &amp;point_out) const</td></tr>
<tr class="separator:a596b1e2184766db3681a6d9059157cc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae27440d95b1fc5568b2ec820302654a4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ae27440d95b1fc5568b2ec820302654a4">performProcessing</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;output)</td></tr>
<tr class="memdesc:ae27440d95b1fc5568b2ec820302654a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract surface reconstruction method.  <a href="classpcl_1_1_moving_least_squares.html#ae27440d95b1fc5568b2ec820302654a4">更多...</a><br /></td></tr>
<tr class="separator:ae27440d95b1fc5568b2ec820302654a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a4ffe40c701474aa4f18758d2432ca7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a1a4ffe40c701474aa4f18758d2432ca7">performUpsampling</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;output)</td></tr>
<tr class="memdesc:a1a4ffe40c701474aa4f18758d2432ca7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform upsampling for the distinct-cloud and voxel-grid methods  <a href="classpcl_1_1_moving_least_squares.html#a1a4ffe40c701474aa4f18758d2432ca7">更多...</a><br /></td></tr>
<tr class="separator:a1a4ffe40c701474aa4f18758d2432ca7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a8f261a61a049a33b90064b0956a1b34a"><td class="memItemLeft" align="right" valign="top"><a id="a8f261a61a049a33b90064b0956a1b34a"></a>
NormalCloudPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a></td></tr>
<tr class="memdesc:a8f261a61a049a33b90064b0956a1b34a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The point cloud that will hold the estimated normals, if set. <br /></td></tr>
<tr class="separator:a8f261a61a049a33b90064b0956a1b34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe8cc1328aa77f8262f4243dd4fdba37"><td class="memItemLeft" align="right" valign="top"><a id="afe8cc1328aa77f8262f4243dd4fdba37"></a>
PointCloudInConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a></td></tr>
<tr class="memdesc:afe8cc1328aa77f8262f4243dd4fdba37"><td class="mdescLeft">&#160;</td><td class="mdescRight">The distinct point cloud that will be projected to the MLS surface. <br /></td></tr>
<tr class="separator:afe8cc1328aa77f8262f4243dd4fdba37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaf7406e16a85ba21c0c100d8d0d95e3"><td class="memItemLeft" align="right" valign="top"><a id="adaf7406e16a85ba21c0c100d8d0d95e3"></a>
SearchMethod&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#adaf7406e16a85ba21c0c100d8d0d95e3">search_method_</a></td></tr>
<tr class="memdesc:adaf7406e16a85ba21c0c100d8d0d95e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The search method template for indices. <br /></td></tr>
<tr class="separator:adaf7406e16a85ba21c0c100d8d0d95e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57adb49b99d770e7d32de6e64c872b4a"><td class="memItemLeft" align="right" valign="top"><a id="a57adb49b99d770e7d32de6e64c872b4a"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a></td></tr>
<tr class="memdesc:a57adb49b99d770e7d32de6e64c872b4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the spatial search object. <br /></td></tr>
<tr class="separator:a57adb49b99d770e7d32de6e64c872b4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a234ecea03abec8ecb99a5b5f871e7c9e"><td class="memItemLeft" align="right" valign="top"><a id="a234ecea03abec8ecb99a5b5f871e7c9e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a></td></tr>
<tr class="memdesc:a234ecea03abec8ecb99a5b5f871e7c9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The order of the polynomial to be fit. <br /></td></tr>
<tr class="separator:a234ecea03abec8ecb99a5b5f871e7c9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46e617220222b6d402ebadad8b21cdf3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a></td></tr>
<tr class="separator:a46e617220222b6d402ebadad8b21cdf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36c2086cb13c37080daba5009f57f484"><td class="memItemLeft" align="right" valign="top"><a id="a36c2086cb13c37080daba5009f57f484"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a></td></tr>
<tr class="memdesc:a36c2086cb13c37080daba5009f57f484"><td class="mdescLeft">&#160;</td><td class="mdescRight">The nearest neighbors search radius for each point. <br /></td></tr>
<tr class="separator:a36c2086cb13c37080daba5009f57f484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c2a7bb303cf17f5fa5e3360e059e8e7"><td class="memItemLeft" align="right" valign="top"><a id="a3c2a7bb303cf17f5fa5e3360e059e8e7"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a></td></tr>
<tr class="memdesc:a3c2a7bb303cf17f5fa5e3360e059e8e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameter for distance based weighting of neighbors (search_radius_ * search_radius_ works fine) <br /></td></tr>
<tr class="separator:a3c2a7bb303cf17f5fa5e3360e059e8e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd4484eb2270ad8ce06550e51c13a4d1"><td class="memItemLeft" align="right" valign="top"><a id="acd4484eb2270ad8ce06550e51c13a4d1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a></td></tr>
<tr class="memdesc:acd4484eb2270ad8ce06550e51c13a4d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameter that specifies whether the normals should be computed for the input cloud or not <br /></td></tr>
<tr class="separator:acd4484eb2270ad8ce06550e51c13a4d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9237259f71cf6491ff1f314eddb3b5d0"><td class="memItemLeft" align="right" valign="top"><a id="a9237259f71cf6491ff1f314eddb3b5d0"></a>
UpsamplingMethod&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a></td></tr>
<tr class="memdesc:a9237259f71cf6491ff1f314eddb3b5d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameter that specifies the upsampling method to be used <br /></td></tr>
<tr class="separator:a9237259f71cf6491ff1f314eddb3b5d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2346b81e98ac4a83b65613b4f5dac9a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a></td></tr>
<tr class="memdesc:aa2346b81e98ac4a83b65613b4f5dac9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Radius of the circle in the local point plane that will be sampled  <a href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">更多...</a><br /></td></tr>
<tr class="separator:aa2346b81e98ac4a83b65613b4f5dac9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7144ad759e58dca299c0ab5f8c6259b9"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a></td></tr>
<tr class="memdesc:a7144ad759e58dca299c0ab5f8c6259b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Step size for the local plane sampling  <a href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">更多...</a><br /></td></tr>
<tr class="separator:a7144ad759e58dca299c0ab5f8c6259b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4a818c9ec101ecfcf970c6165b201c0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">desired_num_points_in_radius_</a></td></tr>
<tr class="memdesc:ab4a818c9ec101ecfcf970c6165b201c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameter that specifies the desired number of points within the search radius  <a href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">更多...</a><br /></td></tr>
<tr class="separator:ab4a818c9ec101ecfcf970c6165b201c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb0395459bc94fa4c1990b47d471a4bc"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html">MLSResult</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a></td></tr>
<tr class="memdesc:afb0395459bc94fa4c1990b47d471a4bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the MLS result for each point in the input cloud  <a href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">更多...</a><br /></td></tr>
<tr class="separator:afb0395459bc94fa4c1990b47d471a4bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbde287f8eb3329c22d0246db630ad58"><td class="memItemLeft" align="right" valign="top"><a id="afbde287f8eb3329c22d0246db630ad58"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">voxel_size_</a></td></tr>
<tr class="memdesc:afbde287f8eb3329c22d0246db630ad58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Voxel size for the VOXEL_GRID_DILATION upsampling method <br /></td></tr>
<tr class="separator:afbde287f8eb3329c22d0246db630ad58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea681e491f0d8671dbd6e36ccd8f68b5"><td class="memItemLeft" align="right" valign="top"><a id="aea681e491f0d8671dbd6e36ccd8f68b5"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">dilation_iteration_num_</a></td></tr>
<tr class="memdesc:aea681e491f0d8671dbd6e36ccd8f68b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of dilation steps for the VOXEL_GRID_DILATION upsampling method <br /></td></tr>
<tr class="separator:aea681e491f0d8671dbd6e36ccd8f68b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca9f46399d7e0d6bfb08b9d6ffbb58d1"><td class="memItemLeft" align="right" valign="top"><a id="aca9f46399d7e0d6bfb08b9d6ffbb58d1"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a></td></tr>
<tr class="memdesc:aca9f46399d7e0d6bfb08b9d6ffbb58d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of coefficients, to be computed from the requested order. <br /></td></tr>
<tr class="separator:aca9f46399d7e0d6bfb08b9d6ffbb58d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac34f1e1593c2fe8860e4d77f91c87930"><td class="memItemLeft" align="right" valign="top"><a id="ac34f1e1593c2fe8860e4d77f91c87930"></a>
PointIndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">corresponding_input_indices_</a></td></tr>
<tr class="memdesc:ac34f1e1593c2fe8860e4d77f91c87930"><td class="mdescLeft">&#160;</td><td class="mdescRight">Collects for each point in output the corrseponding point in the input. <br /></td></tr>
<tr class="separator:ac34f1e1593c2fe8860e4d77f91c87930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointInT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:a4146583850020e8888420f1d734dfe7d"><td class="memItemLeft" align="right" valign="top"><a id="a4146583850020e8888420f1d734dfe7d"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a4146583850020e8888420f1d734dfe7d">getClassName</a> () const</td></tr>
<tr class="memdesc:a4146583850020e8888420f1d734dfe7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Abstract class get name method. <br /></td></tr>
<tr class="separator:a4146583850020e8888420f1d734dfe7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a000d8f30c194ac2a36b84120698c99c1"><td class="memItemLeft" align="right" valign="top"><a id="a000d8f30c194ac2a36b84120698c99c1"></a>
boost::mt19937&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#a000d8f30c194ac2a36b84120698c99c1">rng_alg_</a></td></tr>
<tr class="memdesc:a000d8f30c194ac2a36b84120698c99c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Boost-based random number generator algorithm. <br /></td></tr>
<tr class="separator:a000d8f30c194ac2a36b84120698c99c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7623ffdbf0db9c66b246b5499c07706"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr&lt; boost::variate_generator&lt; boost::mt19937 &amp;, boost::uniform_real&lt; float &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_moving_least_squares.html#ad7623ffdbf0db9c66b246b5499c07706">rng_uniform_distribution_</a></td></tr>
<tr class="memdesc:ad7623ffdbf0db9c66b246b5499c07706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Random number generator using an uniform distribution of floats  <a href="classpcl_1_1_moving_least_squares.html#ad7623ffdbf0db9c66b246b5499c07706">更多...</a><br /></td></tr>
<tr class="separator:ad7623ffdbf0db9c66b246b5499c07706"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointInT, typename PointOutT&gt;<br />
class pcl::MovingLeastSquares&lt; PointInT, PointOutT &gt;</h3>

<p><a class="el" href="classpcl_1_1_moving_least_squares.html" title="MovingLeastSquares represent an implementation of the MLS (Moving Least Squares) algorithm for data s...">MovingLeastSquares</a> represent an implementation of the MLS (Moving Least Squares) algorithm for data smoothing and improved normal estimation. It also contains methods for upsampling the resulting cloud based on the parametric fit. Reference paper: "Computing and Rendering Point Set Surfaces" by Marc Alexa, Johannes Behr, Daniel Cohen-Or, Shachar Fleishman, David Levin and Claudio T. Silva www.sci.utah.edu/~shachar/Publications/crpss.pdf </p>
<dl class="section author"><dt>作者</dt><dd>Zoltan Csaba Marton, Radu B. Rusu, Alexandru E. Ichim, Suat Gedikli </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="af89da1f47e32a533e5c0c75d1a244a74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af89da1f47e32a533e5c0c75d1a244a74">&#9670;&nbsp;</a></span>computeMLSPointNormal()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::computeMLSPointNormal </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>nn_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>nn_sqr_dists</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;&#160;</td>
          <td class="paramname"><em>projected_points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">NormalCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>projected_points_normals</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &amp;&#160;</td>
          <td class="paramname"><em>corresponding_input_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html">MLSResult</a> &amp;&#160;</td>
          <td class="paramname"><em>mls_result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Smooth a given point and its neighborghood using Moving Least Squares. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>the inex of the query point in the input cloud </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nn_indices</td><td>the set of nearest neighbors indices for pt </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nn_sqr_dists</td><td>the set of nearest neighbors squared distances for pt </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">projected_points</td><td>the set of points projected points around the query point (in the case of upsampling method NONE, only the query point projected to its own fitted surface will be returned, in the case of the other upsampling methods, multiple points will be returned) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">projected_points_normals</td><td>the normals corresponding to the projected points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">corresponding_input_indices</td><td>the set of indices with each point in output having the corresponding point in input </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">mls_result</td><td>stores the MLS result for each point in the input cloud (used only in the case of VOXEL_GRID_DILATION or DISTINCT_CLOUD upsampling) </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <span class="comment">// Note: this method is const because it needs to be thread-safe</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">//       (MovingLeastSquaresOMP calls it from multiple threads)</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="comment">// Compute the plane coefficients</span></div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  EIGEN_ALIGN16 Eigen::Matrix3d covariance_matrix;</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  Eigen::Vector4d xyz_centroid;</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <span class="comment">// Estimate the XYZ centroid</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  <a class="code" href="group__common.html#gaf5729fae15603888b49743b118025290">pcl::compute3DCentroid</a> (*<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, nn_indices, xyz_centroid);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160; </div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  <span class="comment">// Compute the 3x3 covariance matrix</span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <a class="code" href="group__common.html#gac36b146ec26b1ceb7be43a9ecaa010c4">pcl::computeCovarianceMatrix</a> (*<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, nn_indices, xyz_centroid, covariance_matrix);</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  EIGEN_ALIGN16 Eigen::Vector3d::Scalar eigen_value;</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  EIGEN_ALIGN16 Eigen::Vector3d eigen_vector;</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  Eigen::Vector4d model_coefficients;</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <a class="code" href="group__common.html#gaca873868052e7d26efcf4b684a17bef2">pcl::eigen33</a> (covariance_matrix, eigen_value, eigen_vector);</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  model_coefficients.head&lt;3&gt; ().matrix () = eigen_vector;</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  model_coefficients[3] = 0;</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  model_coefficients[3] = -1 * model_coefficients.dot (xyz_centroid);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;  <span class="comment">// Projected query point</span></div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  Eigen::Vector3d point = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[index].getVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keywordtype">double</span> <a class="code" href="common_2include_2pcl_2common_2geometry_8h.html#a2fc89f0c26b7c7377fcd2851fa933b87">distance</a> = point.dot (model_coefficients.head&lt;3&gt; ()) + model_coefficients[3];</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  point -= <a class="code" href="common_2include_2pcl_2common_2geometry_8h.html#a2fc89f0c26b7c7377fcd2851fa933b87">distance</a> * model_coefficients.head&lt;3&gt; ();</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160; </div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keywordtype">float</span> curvature = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (covariance_matrix.trace ());</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  <span class="comment">// Compute the curvature surface change</span></div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="keywordflow">if</span> (curvature != 0)</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    curvature = fabsf (<span class="keywordtype">float</span> (eigen_value / <span class="keywordtype">double</span> (curvature)));</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160; </div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  <span class="comment">// Get a copy of the plane normal easy access</span></div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;  Eigen::Vector3d plane_normal = model_coefficients.head&lt;3&gt; ();</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// Vector in which the polynomial coefficients will be put</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  Eigen::VectorXd c_vec;</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <span class="comment">// Local coordinate system (Darboux frame)</span></div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  Eigen::Vector3d v_axis (0.0f, 0.0f, 0.0f), u_axis (0.0f, 0.0f, 0.0f);</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160; </div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <span class="comment">// Perform polynomial fit to update point and normal</span></div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="comment"></span>  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a> &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()) &gt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a>)</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  {</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="comment">// Update neighborhood, since point was projected, and computing relative</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <span class="comment">// positions. Note updating only distances for the weights for speed</span></div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    std::vector&lt;Eigen::Vector3d, Eigen::aligned_allocator&lt;Eigen::Vector3d&gt; &gt; de_meaned (nn_indices.size ());</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ni = 0; ni &lt; nn_indices.size (); ++ni)</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    {</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      de_meaned[ni][0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nn_indices[ni]].x - point[0];</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      de_meaned[ni][1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nn_indices[ni]].y - point[1];</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      de_meaned[ni][2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nn_indices[ni]].z - point[2];</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      nn_sqr_dists[ni] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (de_meaned[ni].dot (de_meaned[ni]));</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    }</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="comment">// Allocate matrices and vectors to hold the data used for the polynomial fit</span></div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    Eigen::VectorXd weight_vec (nn_indices.size ());</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    Eigen::MatrixXd P (<a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a>, nn_indices.size ());</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    Eigen::VectorXd f_vec (nn_indices.size ());</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    Eigen::MatrixXd P_weight; <span class="comment">// size will be (nr_coeff_, nn_indices.size ());</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    Eigen::MatrixXd P_weight_Pt (<a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a>, <a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a>);</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// Get local coordinate system (Darboux frame)</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    v_axis = plane_normal.unitOrthogonal ();</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    u_axis = plane_normal.cross (v_axis);</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="comment">// Go through neighbors, transform them in the local coordinate system,</span></div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <span class="comment">// save height and the evaluation of the polynome&#39;s terms</span></div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keywordtype">double</span> u_coord, v_coord, u_pow, v_pow;</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ni = 0; ni &lt; nn_indices.size (); ++ni)</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      <span class="comment">// (Re-)compute weights</span></div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      weight_vec (ni) = exp (-nn_sqr_dists[ni] / <a class="code" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a>);</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="comment">// Transforming coordinates</span></div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      u_coord = de_meaned[ni].dot (u_axis);</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      v_coord = de_meaned[ni].dot (v_axis);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      f_vec (ni) = de_meaned[ni].dot (plane_normal);</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="comment">// Compute the polynomial&#39;s terms at the current point</span></div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <span class="keywordtype">int</span> j = 0;</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      u_pow = 1;</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ui = 0; ui &lt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a>; ++ui)</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      {</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        v_pow = 1;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> vi = 0; vi &lt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> - ui; ++vi)</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        {</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;          P (j++, ni) = u_pow * v_pow;</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;          v_pow *= v_coord;</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        }</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;        u_pow *= u_coord;</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      }</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    }</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160; </div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="comment">// Computing coefficients</span></div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    P_weight = P * weight_vec.asDiagonal ();</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    P_weight_Pt = P_weight * P.transpose ();</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    c_vec = P_weight * f_vec;</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    P_weight_Pt.llt ().solveInPlace (c_vec);</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  }</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160; </div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  <span class="keywordflow">switch</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a>)</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  {</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keywordflow">case</span> (NONE):</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    {</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      Eigen::Vector3d normal = plane_normal;</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a> &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()) &gt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a> &amp;&amp; pcl_isfinite (c_vec[0]))</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      {</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        point += (c_vec[0] * plane_normal);</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="comment">// Compute tangent vectors using the partial derivates evaluated at (0,0) which is c_vec[order_+1] and c_vec[1]</span></div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;          normal = plane_normal - c_vec[<a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> + 1] * u_axis - c_vec[1] * v_axis;</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      }</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      PointOutT aux;</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      aux.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[0]);</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      aux.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[1]);</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;      aux.z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[2]);</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      projected_points.push_back (aux);</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      {</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> aux_normal;</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        aux_normal.normal_x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[0]);</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        aux_normal.normal_y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[1]);</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        aux_normal.normal_z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[2]);</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        aux_normal.curvature = curvature;</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        projected_points_normals.push_back (aux_normal);</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        corresponding_input_indices.indices.push_back (index);</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;      }</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160; </div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    }</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keywordflow">case</span> (SAMPLE_LOCAL_PLANE):</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    {</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;      <span class="comment">// Uniformly sample a circle around the query point using the radius and step parameters</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">float</span> u_disp = -<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a>); u_disp &lt;= upsampling_radius_; u_disp += static_cast&lt;float&gt; (<a class="code" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a>))</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">float</span> v_disp = -<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a>); v_disp &lt;= upsampling_radius_; v_disp += static_cast&lt;float&gt; (<a class="code" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a>))</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;          <span class="keywordflow">if</span> (u_disp*u_disp + v_disp*v_disp &lt; <a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a>*<a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a>)</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;          {</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;            PointOutT projected_point;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;            <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> projected_normal;</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            <a class="code" href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">projectPointToMLSSurface</a> (u_disp, v_disp, u_axis, v_axis, plane_normal, point,</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                                      curvature, c_vec,</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                                      <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()),</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                                      projected_point, projected_normal);</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;            projected_points.push_back (projected_point);</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            corresponding_input_indices.indices.push_back (index);</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;              projected_points_normals.push_back (projected_normal);</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;          }</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    }</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <span class="keywordflow">case</span> (RANDOM_UNIFORM_DENSITY):</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    {</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;      <span class="comment">// Compute the local point density and add more samples if necessary</span></div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      <span class="keywordtype">int</span> num_points_to_add = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (floor (<a class="code" href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">desired_num_points_in_radius_</a> / 2.0 / <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (nn_indices.size ())));</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160; </div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      <span class="comment">// Just add the query point, because the density is good</span></div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;      <span class="keywordflow">if</span> (num_points_to_add &lt;= 0)</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      {</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="comment">// Just add the current point</span></div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        Eigen::Vector3d normal = plane_normal;</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a> &amp;&amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()) &gt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a> &amp;&amp; pcl_isfinite (c_vec[0]))</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        {</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;          <span class="comment">// Projection onto MLS surface along Darboux normal to the height at (0,0)</span></div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;          point += (c_vec[0] * plane_normal);</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;          <span class="comment">// Compute tangent vectors using the partial derivates evaluated at (0,0) which is c_vec[order_+1] and c_vec[1]</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;            normal = plane_normal - c_vec[<a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> + 1] * u_axis - c_vec[1] * v_axis;</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        }</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        PointOutT aux;</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        aux.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[0]);</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        aux.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[1]);</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        aux.z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (point[2]);</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        projected_points.push_back (aux);</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        corresponding_input_indices.indices.push_back (index);</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160; </div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        {</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;          <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> aux_normal;</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;          aux_normal.normal_x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[0]);</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;          aux_normal.normal_y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[1]);</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;          aux_normal.normal_z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[2]);</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;          aux_normal.curvature = curvature;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;          projected_points_normals.push_back (aux_normal);</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        }</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;      }</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;      {</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        <span class="comment">// Sample the local plane</span></div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> num_added = 0; num_added &lt; num_points_to_add;)</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        {</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;          <span class="keywordtype">float</span> u_disp = (*rng_uniform_distribution_) (),</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;              v_disp = (*<a class="code" href="classpcl_1_1_moving_least_squares.html#ad7623ffdbf0db9c66b246b5499c07706">rng_uniform_distribution_</a>) ();</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;          <span class="comment">// Check if inside circle; if not, try another coin flip</span></div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;          <span class="keywordflow">if</span> (u_disp * u_disp + v_disp * v_disp &gt; <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> * <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a>/4)</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;            <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160; </div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;          PointOutT projected_point;</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;          <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> projected_normal;</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;          <a class="code" href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">projectPointToMLSSurface</a> (u_disp, v_disp, u_axis, v_axis, plane_normal, point,</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                                    curvature, c_vec,</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                                    <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()),</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                                    projected_point, projected_normal);</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;          projected_points.push_back (projected_point);</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;          corresponding_input_indices.indices.push_back (index);</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;          <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;            projected_points_normals.push_back (projected_normal);</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;          num_added ++;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        }</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      }</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    }</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    <span class="keywordflow">case</span> (VOXEL_GRID_DILATION):</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    <span class="keywordflow">case</span> (DISTINCT_CLOUD):</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    {</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      <span class="comment">// Take all point pairs and sample space between them in a grid-fashion</span></div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      <span class="comment">// \note consider only point pairs with increasing indices</span></div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      mls_result = MLSResult (point, plane_normal, u_axis, v_axis, c_vec, <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (nn_indices.size ()), curvature);</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    }</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;  }</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a0e2f25248f7f01a111763877698e06e4"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">pcl::MovingLeastSquares::projectPointToMLSSurface</a></div><div class="ttdeci">void projectPointToMLSSurface(float &amp;u_disp, float &amp;v_disp, Eigen::Vector3d &amp;u_axis, Eigen::Vector3d &amp;v_axis, Eigen::Vector3d &amp;n_axis, Eigen::Vector3d &amp;mean, float &amp;curvature, Eigen::VectorXd &amp;c_vec, int num_neighbors, PointOutT &amp;result_point, pcl::Normal &amp;result_normal) const</div><div class="ttdoc">Fits a point (sample point) given in the local plane coordinates of an input point (query point) to t...</div><div class="ttdef"><b>Definition:</b> mls.hpp:409</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a234ecea03abec8ecb99a5b5f871e7c9e"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">pcl::MovingLeastSquares::order_</a></div><div class="ttdeci">int order_</div><div class="ttdoc">The order of the polynomial to be fit.</div><div class="ttdef"><b>Definition:</b> mls.h:312</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a36c2086cb13c37080daba5009f57f484"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">pcl::MovingLeastSquares::search_radius_</a></div><div class="ttdeci">double search_radius_</div><div class="ttdoc">The nearest neighbors search radius for each point.</div><div class="ttdef"><b>Definition:</b> mls.h:318</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a3c2a7bb303cf17f5fa5e3360e059e8e7"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">pcl::MovingLeastSquares::sqr_gauss_param_</a></div><div class="ttdeci">double sqr_gauss_param_</div><div class="ttdoc">Parameter for distance based weighting of neighbors (search_radius_ * search_radius_ works fine)</div><div class="ttdef"><b>Definition:</b> mls.h:321</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a46e617220222b6d402ebadad8b21cdf3"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">pcl::MovingLeastSquares::polynomial_fit_</a></div><div class="ttdeci">bool polynomial_fit_</div><div class="ttdef"><b>Definition:</b> mls.h:315</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a7144ad759e58dca299c0ab5f8c6259b9"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">pcl::MovingLeastSquares::upsampling_step_</a></div><div class="ttdeci">double upsampling_step_</div><div class="ttdoc">Step size for the local plane sampling</div><div class="ttdef"><b>Definition:</b> mls.h:337</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a9237259f71cf6491ff1f314eddb3b5d0"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">pcl::MovingLeastSquares::upsample_method_</a></div><div class="ttdeci">UpsamplingMethod upsample_method_</div><div class="ttdoc">Parameter that specifies the upsampling method to be used</div><div class="ttdef"><b>Definition:</b> mls.h:327</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_aa2346b81e98ac4a83b65613b4f5dac9a"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">pcl::MovingLeastSquares::upsampling_radius_</a></div><div class="ttdeci">double upsampling_radius_</div><div class="ttdoc">Radius of the circle in the local point plane that will be sampled</div><div class="ttdef"><b>Definition:</b> mls.h:332</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_ab4a818c9ec101ecfcf970c6165b201c0"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">pcl::MovingLeastSquares::desired_num_points_in_radius_</a></div><div class="ttdeci">int desired_num_points_in_radius_</div><div class="ttdoc">Parameter that specifies the desired number of points within the search radius</div><div class="ttdef"><b>Definition:</b> mls.h:342</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_aca9f46399d7e0d6bfb08b9d6ffbb58d1"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">pcl::MovingLeastSquares::nr_coeff_</a></div><div class="ttdeci">int nr_coeff_</div><div class="ttdoc">Number of coefficients, to be computed from the requested order.</div><div class="ttdef"><b>Definition:</b> mls.h:436</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_acd4484eb2270ad8ce06550e51c13a4d1"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">pcl::MovingLeastSquares::compute_normals_</a></div><div class="ttdeci">bool compute_normals_</div><div class="ttdoc">Parameter that specifies whether the normals should be computed for the input cloud or not</div><div class="ttdef"><b>Definition:</b> mls.h:324</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_ad7623ffdbf0db9c66b246b5499c07706"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#ad7623ffdbf0db9c66b246b5499c07706">pcl::MovingLeastSquares::rng_uniform_distribution_</a></div><div class="ttdeci">boost::shared_ptr&lt; boost::variate_generator&lt; boost::mt19937 &amp;, boost::uniform_real&lt; float &gt; &gt; &gt; rng_uniform_distribution_</div><div class="ttdoc">Random number generator using an uniform distribution of floats</div><div class="ttdef"><b>Definition:</b> mls.h:521</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase&lt; PointInT &gt;::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="acommon_2include_2pcl_2common_2geometry_8h_html_a2fc89f0c26b7c7377fcd2851fa933b87"><div class="ttname"><a href="common_2include_2pcl_2common_2geometry_8h.html#a2fc89f0c26b7c7377fcd2851fa933b87">pcl::geometry::distance</a></div><div class="ttdeci">float distance(const PointT &amp;p1, const PointT &amp;p2)</div><div class="ttdef"><b>Definition:</b> geometry.h:60</div></div>
<div class="ttc" id="agroup__common_html_gac36b146ec26b1ceb7be43a9ecaa010c4"><div class="ttname"><a href="group__common.html#gac36b146ec26b1ceb7be43a9ecaa010c4">pcl::computeCovarianceMatrix</a></div><div class="ttdeci">unsigned int computeCovarianceMatrix(const pcl::PointCloud&lt; PointT &gt; &amp;cloud, const Eigen::Matrix&lt; Scalar, 4, 1 &gt; &amp;centroid, Eigen::Matrix&lt; Scalar, 3, 3 &gt; &amp;covariance_matrix)</div><div class="ttdoc">Compute the 3x3 covariance matrix of a given set of points. The result is returned as a Eigen::Matrix...</div></div>
<div class="ttc" id="agroup__common_html_gaca873868052e7d26efcf4b684a17bef2"><div class="ttname"><a href="group__common.html#gaca873868052e7d26efcf4b684a17bef2">pcl::eigen33</a></div><div class="ttdeci">void eigen33(const Matrix &amp;mat, typename Matrix::Scalar &amp;eigenvalue, Vector &amp;eigenvector)</div><div class="ttdoc">determines the eigenvector and eigenvalue of the smallest eigenvalue of the symmetric positive semi d...</div><div class="ttdef"><b>Definition:</b> eigen.hpp:251</div></div>
<div class="ttc" id="agroup__common_html_gaf5729fae15603888b49743b118025290"><div class="ttname"><a href="group__common.html#gaf5729fae15603888b49743b118025290">pcl::compute3DCentroid</a></div><div class="ttdeci">unsigned int compute3DCentroid(ConstCloudIterator&lt; PointT &gt; &amp;cloud_iterator, Eigen::Matrix&lt; Scalar, 4, 1 &gt; &amp;centroid)</div><div class="ttdoc">Compute the 3D (X-Y-Z) centroid of a set of points and return it as a 3D vector.</div><div class="ttdef"><b>Definition:</b> centroid.hpp:50</div></div>
<div class="ttc" id="astructpcl_1_1_normal_html"><div class="ttname"><a href="structpcl_1_1_normal.html">pcl::Normal</a></div><div class="ttdoc">A point structure representing normal coordinates and the surface curvature estimate....</div><div class="ttdef"><b>Definition:</b> point_types.hpp:779</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a22dee9d7438cb0e792283f10bdf657b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22dee9d7438cb0e792283f10bdf657b7">&#9670;&nbsp;</a></span>getDilationIterations()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::getDilationIterations </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the number of dilation steps of the voxel grid </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the VOXEL_GRID_DILATION upsampling method </dd></dl>
<div class="fragment"><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">dilation_iteration_num_</a>; }</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_aea681e491f0d8671dbd6e36ccd8f68b5"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">pcl::MovingLeastSquares::dilation_iteration_num_</a></div><div class="ttdeci">int dilation_iteration_num_</div><div class="ttdoc">Number of dilation steps for the VOXEL_GRID_DILATION upsampling method</div><div class="ttdef"><b>Definition:</b> mls.h:433</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad949e7434b0d90828c903fe1ff425ee7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad949e7434b0d90828c903fe1ff425ee7">&#9670;&nbsp;</a></span>getDilationVoxelSize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::getDilationVoxelSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the voxel size for the voxel grid </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the VOXEL_GRID_DILATION upsampling method </dd></dl>
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">voxel_size_</a>; }</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_afbde287f8eb3329c22d0246db630ad58"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">pcl::MovingLeastSquares::voxel_size_</a></div><div class="ttdeci">float voxel_size_</div><div class="ttdoc">Voxel size for the VOXEL_GRID_DILATION upsampling method</div><div class="ttdef"><b>Definition:</b> mls.h:430</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae0fca003d2d4b9d2f4fd5cbb775c0cec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0fca003d2d4b9d2f4fd5cbb775c0cec">&#9670;&nbsp;</a></span>getPointDensity()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::getPointDensity </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the parameter that specifies the desired number of points within the search radius </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of RANDOM_UNIFORM_DENSITY upsampling </dd></dl>
<div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">desired_num_points_in_radius_</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5de9b3c34f261b82847cf9576d7749b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5de9b3c34f261b82847cf9576d7749b0">&#9670;&nbsp;</a></span>getUpsamplingRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::getUpsamplingRadius </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the radius of the circle in the local point plane that will be sampled </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>
<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3f9392a84fd3363a30ecfb8ccde17d3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f9392a84fd3363a30ecfb8ccde17d3e">&#9670;&nbsp;</a></span>getUpsamplingStepSize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::getUpsamplingStepSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get the step size for the local plane sampling </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>
<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae27440d95b1fc5568b2ec820302654a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae27440d95b1fc5568b2ec820302654a4">&#9670;&nbsp;</a></span>performProcessing()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::performProcessing </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Abstract surface reconstruction method. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the result of the reconstruction </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_cloud_surface_processing.html#a3ae7ef7ec7f33418874a12b3edeead38">pcl::CloudSurfaceProcessing&lt; PointInT, PointOutT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;{</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;  <span class="comment">// Compute the number of coefficients</span></div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  <a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a> = (<a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> + 1) * (<a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> + 2) / 2;</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <span class="comment">// Allocate enough space to hold the results of nearest neighbor searches</span></div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  <span class="comment">// \note resize is irrelevant for a radiusSearch ().</span></div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  std::vector&lt;int&gt; nn_indices;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  std::vector&lt;float&gt; nn_sqr_dists;</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  </div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="keywordtype">size_t</span> mls_result_index = 0;</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160; </div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="comment">// For all points</span></div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> cp = 0; cp &lt; <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (); ++cp)</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  {</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="comment">// Get the initial estimates of point positions and their neighborhoods</span></div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_moving_least_squares.html#a8450a26f10b00753056f01eef9042c1f">searchForNeighbors</a> ((*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[cp], nn_indices, nn_sqr_dists))</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160; </div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="comment">// Check the number of nearest neighbors for normal estimation (and later</span></div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    <span class="comment">// for polynomial fit as well)</span></div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    <span class="keywordflow">if</span> (nn_indices.size () &lt; 3)</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;      <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; </div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160; </div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    PointCloudOut projected_points;</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    NormalCloud projected_points_normals;</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <span class="comment">// Get a plane approximating the local surface&#39;s tangent and project point onto it</span></div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    <span class="keywordtype">int</span> index = (*indices_)[cp];</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    </div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> == VOXEL_GRID_DILATION || <a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> == DISTINCT_CLOUD)</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;      mls_result_index = index; <span class="comment">// otherwise we give it a dummy location.</span></div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160; </div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#af89da1f47e32a533e5c0c75d1a244a74">computeMLSPointNormal</a> (index, nn_indices, nn_sqr_dists, projected_points, projected_points_normals, *<a class="code" href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">corresponding_input_indices_</a>, <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[mls_result_index]);</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160; </div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160; </div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    <span class="comment">// Copy all information from the input cloud to the output points (not doing any interpolation)</span></div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> pp = 0; pp &lt; projected_points.size (); ++pp)</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;      copyMissingFields (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[(*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[cp]], projected_points[pp]);</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160; </div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; </div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    <span class="comment">// Append projected points to output</span></div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    output.insert (output.end (), projected_points.begin (), projected_points.end ());</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;insert (<a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;end (), projected_points_normals.begin (), projected_points_normals.end ());</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  }</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160; </div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="comment">// Perform the distinct-cloud or voxel-grid upsampling</span></div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <a class="code" href="classpcl_1_1_moving_least_squares.html#a1a4ffe40c701474aa4f18758d2432ca7">performUpsampling</a> (output);</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a1a4ffe40c701474aa4f18758d2432ca7"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a1a4ffe40c701474aa4f18758d2432ca7">pcl::MovingLeastSquares::performUpsampling</a></div><div class="ttdeci">void performUpsampling(PointCloudOut &amp;output)</div><div class="ttdoc">Perform upsampling for the distinct-cloud and voxel-grid methods</div><div class="ttdef"><b>Definition:</b> mls.hpp:590</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a8450a26f10b00753056f01eef9042c1f"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a8450a26f10b00753056f01eef9042c1f">pcl::MovingLeastSquares::searchForNeighbors</a></div><div class="ttdeci">int searchForNeighbors(int index, std::vector&lt; int &gt; &amp;indices, std::vector&lt; float &gt; &amp;sqr_distances) const</div><div class="ttdoc">Search for the closest nearest neighbors of a given point using a radius search</div><div class="ttdef"><b>Definition:</b> mls.h:447</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a8f261a61a049a33b90064b0956a1b34a"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">pcl::MovingLeastSquares::normals_</a></div><div class="ttdeci">NormalCloudPtr normals_</div><div class="ttdoc">The point cloud that will hold the estimated normals, if set.</div><div class="ttdef"><b>Definition:</b> mls.h:300</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_ac34f1e1593c2fe8860e4d77f91c87930"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">pcl::MovingLeastSquares::corresponding_input_indices_</a></div><div class="ttdeci">PointIndicesPtr corresponding_input_indices_</div><div class="ttdoc">Collects for each point in output the corrseponding point in the input.</div><div class="ttdef"><b>Definition:</b> mls.h:439</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_af89da1f47e32a533e5c0c75d1a244a74"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#af89da1f47e32a533e5c0c75d1a244a74">pcl::MovingLeastSquares::computeMLSPointNormal</a></div><div class="ttdeci">void computeMLSPointNormal(int index, const std::vector&lt; int &gt; &amp;nn_indices, std::vector&lt; float &gt; &amp;nn_sqr_dists, PointCloudOut &amp;projected_points, NormalCloud &amp;projected_points_normals, PointIndices &amp;corresponding_input_indices, MLSResult &amp;mls_result) const</div><div class="ttdoc">Smooth a given point and its neighborghood using Moving Least Squares.</div><div class="ttdef"><b>Definition:</b> mls.hpp:165</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_afb0395459bc94fa4c1990b47d471a4bc"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">pcl::MovingLeastSquares::mls_results_</a></div><div class="ttdeci">std::vector&lt; MLSResult &gt; mls_results_</div><div class="ttdoc">Stores the MLS result for each point in the input cloud</div><div class="ttdef"><b>Definition:</b> mls.h:370</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase&lt; PointInT &gt;::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1a4ffe40c701474aa4f18758d2432ca7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a4ffe40c701474aa4f18758d2432ca7">&#9670;&nbsp;</a></span>performUpsampling()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::performUpsampling </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Perform upsampling for the distinct-cloud and voxel-grid methods </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the result of the reconstruction </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;{</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> == DISTINCT_CLOUD)</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  {</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> dp_i = 0; dp_i &lt; <a class="code" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a>-&gt;size (); ++dp_i) <span class="comment">// dp_i = distinct_point_i</span></div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;    {</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;      <span class="comment">// Distinct cloud may have nan points, skip them</span></div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      <span class="keywordflow">if</span> (!pcl_isfinite (<a class="code" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a>-&gt;points[dp_i].x))</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160; </div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      <span class="comment">// Get 3D position of point</span></div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      <span class="comment">//Eigen::Vector3f pos = distinct_cloud_-&gt;points[dp_i].getVector3fMap ();</span></div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;      std::vector&lt;int&gt; nn_indices;</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;      std::vector&lt;float&gt; nn_dists;</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a>-&gt;nearestKSearch (<a class="code" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a>-&gt;points[dp_i], 1, nn_indices, nn_dists);</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;      <span class="keywordtype">int</span> input_index = nn_indices.front ();</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160; </div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;      <span class="comment">// If the closest point did not have a valid MLS fitting result</span></div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;      <span class="comment">// OR if it is too far away from the sampled point</span></div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].valid == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160; </div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;      Eigen::Vector3d add_point = <a class="code" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a>-&gt;points[dp_i].getVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160; </div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;      <span class="keywordtype">float</span> u_disp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((add_point - <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean).dot (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].u_axis)),</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;            v_disp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((add_point - <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean).dot (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].v_axis));</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160; </div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;      PointOutT result_point;</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;      <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> result_normal;</div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">projectPointToMLSSurface</a> (u_disp, v_disp,</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].u_axis, <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].v_axis,</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].plane_normal,</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean,</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].curvature,</div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].c_vec,</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].num_neighbors,</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                                result_point, result_normal);</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160; </div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;      <span class="comment">// Copy additional point information if available</span></div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;      copyMissingFields (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[input_index], result_point);</div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160; </div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;      <span class="comment">// Store the id of the original point</span></div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">corresponding_input_indices_</a>-&gt;indices.push_back (input_index);</div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160; </div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;      output.push_back (result_point);</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;push_back (result_normal);</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;    }</div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;  }</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160; </div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;  <span class="comment">// For the voxel grid upsampling method, generate the voxel grid and dilate it</span></div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;  <span class="comment">// Then, project the newly obtained points to the MLS surface</span></div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> == VOXEL_GRID_DILATION)</div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;  {</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    MLSVoxelGrid voxel_grid (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>, <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>, <a class="code" href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">voxel_size_</a>);</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iteration = 0; iteration &lt; <a class="code" href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">dilation_iteration_num_</a>; ++iteration)</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;      voxel_grid.dilate ();</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160; </div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">typename</span> MLSVoxelGrid::HashMap::iterator m_it = voxel_grid.voxel_grid_.begin (); m_it != voxel_grid.voxel_grid_.end (); ++m_it)</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    {</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;      <span class="comment">// Get 3D position of point</span></div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;      Eigen::Vector3f pos;</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;      voxel_grid.getPosition (m_it-&gt;first, pos);</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; </div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;      PointInT p;</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      p.x = pos[0];</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;      p.y = pos[1];</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;      p.z = pos[2];</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160; </div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;      std::vector&lt;int&gt; nn_indices;</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;      std::vector&lt;float&gt; nn_dists;</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a>-&gt;nearestKSearch (p, 1, nn_indices, nn_dists);</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;      <span class="keywordtype">int</span> input_index = nn_indices.front ();</div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160; </div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;      <span class="comment">// If the closest point did not have a valid MLS fitting result</span></div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;      <span class="comment">// OR if it is too far away from the sampled point</span></div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].valid == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160; </div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;      Eigen::Vector3d add_point = p.getVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;      <span class="keywordtype">float</span> u_disp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((add_point - <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean).dot (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].u_axis)),</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;            v_disp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> ((add_point - <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean).dot (<a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].v_axis));</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; </div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;      PointOutT result_point;</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;      <a class="code" href="structpcl_1_1_normal.html">pcl::Normal</a> result_normal;</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a0e2f25248f7f01a111763877698e06e4">projectPointToMLSSurface</a> (u_disp, v_disp,</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].u_axis, <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].v_axis,</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].plane_normal,</div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].mean,</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].curvature,</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].c_vec,</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;                                <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>[input_index].num_neighbors,</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                                result_point, result_normal);</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160; </div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;      <span class="comment">// Copy additional point information if available</span></div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;      copyMissingFields (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[input_index], result_point);</div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160; </div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;      <span class="comment">// Store the id of the original point</span></div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">corresponding_input_indices_</a>-&gt;indices.push_back (input_index);</div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160; </div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;      output.push_back (result_point);</div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160; </div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;push_back (result_normal);</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    }</div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  }</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a57adb49b99d770e7d32de6e64c872b4a"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">pcl::MovingLeastSquares::tree_</a></div><div class="ttdeci">KdTreePtr tree_</div><div class="ttdoc">A pointer to the spatial search object.</div><div class="ttdef"><b>Definition:</b> mls.h:309</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_afe8cc1328aa77f8262f4243dd4fdba37"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">pcl::MovingLeastSquares::distinct_cloud_</a></div><div class="ttdeci">PointCloudInConstPtr distinct_cloud_</div><div class="ttdoc">The distinct point cloud that will be projected to the MLS surface.</div><div class="ttdef"><b>Definition:</b> mls.h:303</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad168be16626ea58d1c31c321bd1d980f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad168be16626ea58d1c31c321bd1d980f">&#9670;&nbsp;</a></span>process()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::process </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloudOut</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Base method for surface reconstruction for all points given in &lt;setInputCloud (), setIndices ()&gt; </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the resultant reconstructed surface model </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_cloud_surface_processing.html#ae6912c1e996411e848c058720d8b543f">pcl::CloudSurfaceProcessing&lt; PointInT, PointOutT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;{</div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;  <span class="comment">// Reset or initialize the collection of indices</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  <a class="code" href="classpcl_1_1_moving_least_squares.html#ac34f1e1593c2fe8860e4d77f91c87930">corresponding_input_indices_</a>.reset (<span class="keyword">new</span> PointIndices);</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="comment">// Check if normals have to be computed/saved</span></div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  {</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>.reset (<span class="keyword">new</span> NormalCloud);</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="comment">// Copy the header</span></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;header = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;header;</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Clear the fields in case the method exits before computation</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;width = <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;height = 0;</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;points.clear ();</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  }</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="comment">// Copy the header</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;  output.header = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;header;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  output.width = output.height = 0;</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  output.points.clear ();</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> &lt;= 0 || <a class="code" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a> &lt;= 0)</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;  {</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::process] Invalid search radius (%f) or Gaussian parameter (%f)!\n&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a4146583850020e8888420f1d734dfe7d">getClassName</a> ().c_str (), <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a>);</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  }</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">// Check if distinct_cloud_ was set</span></div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> == DISTINCT_CLOUD &amp;&amp; !<a class="code" href="classpcl_1_1_moving_least_squares.html#afe8cc1328aa77f8262f4243dd4fdba37">distinct_cloud_</a>)</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  {</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;[pcl::%s::process] Upsample method was set to DISTINCT_CLOUD, but no distinct cloud was specified.\n&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a4146583850020e8888420f1d734dfe7d">getClassName</a> ().c_str ());</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ())</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="comment">// Initialize the spatial locator</span></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a>)</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  {</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    KdTreePtr tree;</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;isOrganized ())</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      tree.reset (<span class="keyword">new</span> <a class="code" href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor&lt;PointInT&gt;</a> ());</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      tree.reset (<span class="keyword">new</span> <a class="code" href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree&lt;PointInT&gt;</a> (<span class="keyword">false</span>));</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#ab0865f62d90c9fb0f45dd96e587fe84e">setSearchMethod</a> (tree);</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  }</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="comment">// Send the surface dataset to the spatial locator</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a>-&gt;setInputCloud (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>);</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  <span class="keywordflow">switch</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a>)</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  {</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="comment">// Initialize random number generator if necessary</span></div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordflow">case</span> (RANDOM_UNIFORM_DENSITY):</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    {</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#a000d8f30c194ac2a36b84120698c99c1">rng_alg_</a>.seed (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span> (std::time (0)));</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      <span class="keywordtype">float</span> tmp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> / 2.0f);</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      boost::uniform_real&lt;float&gt; uniform_distrib (-tmp, tmp);</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#ad7623ffdbf0db9c66b246b5499c07706">rng_uniform_distribution_</a>.reset (<span class="keyword">new</span> boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_real&lt;float&gt; &gt; (<a class="code" href="classpcl_1_1_moving_least_squares.html#a000d8f30c194ac2a36b84120698c99c1">rng_alg_</a>, uniform_distrib));</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>.resize (1); <span class="comment">// Need to have a reference to a single dummy result.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      </div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">case</span> (VOXEL_GRID_DILATION):</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordflow">case</span> (DISTINCT_CLOUD):</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      {</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>.resize (<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;size ());</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;      }</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      {</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#afb0395459bc94fa4c1990b47d471a4bc">mls_results_</a>.resize (1); <span class="comment">// Need to have a reference to a single dummy result.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      }</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  }</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="comment">// Perform the actual surface reconstruction</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <a class="code" href="classpcl_1_1_moving_least_squares.html#ae27440d95b1fc5568b2ec820302654a4">performProcessing</a> (output);</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a>)</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  {</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;height = 1;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;width = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;size ());</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; output.size (); ++i)</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    {</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;      <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structpcl_1_1traits_1_1field_list.html">pcl::traits::fieldList&lt;PointOutT&gt;::type</a> FieldList;</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      pcl::for_each_type&lt;FieldList&gt; (SetIfFieldExists&lt;PointOutT, float&gt; (output.points[i], <span class="stringliteral">&quot;normal_x&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;points[i].normal_x));</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      pcl::for_each_type&lt;FieldList&gt; (SetIfFieldExists&lt;PointOutT, float&gt; (output.points[i], <span class="stringliteral">&quot;normal_y&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;points[i].normal_y));</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      pcl::for_each_type&lt;FieldList&gt; (SetIfFieldExists&lt;PointOutT, float&gt; (output.points[i], <span class="stringliteral">&quot;normal_z&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;points[i].normal_z));</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      pcl::for_each_type&lt;FieldList&gt; (SetIfFieldExists&lt;PointOutT, float&gt; (output.points[i], <span class="stringliteral">&quot;curvature&quot;</span>, <a class="code" href="classpcl_1_1_moving_least_squares.html#a8f261a61a049a33b90064b0956a1b34a">normals_</a>-&gt;points[i].curvature));</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    }</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  }</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  <span class="comment">// Set proper widths and heights for the clouds</span></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  output.height = 1;</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  output.width = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (output.size ());</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a000d8f30c194ac2a36b84120698c99c1"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a000d8f30c194ac2a36b84120698c99c1">pcl::MovingLeastSquares::rng_alg_</a></div><div class="ttdeci">boost::mt19937 rng_alg_</div><div class="ttdoc">Boost-based random number generator algorithm.</div><div class="ttdef"><b>Definition:</b> mls.h:514</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_a4146583850020e8888420f1d734dfe7d"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#a4146583850020e8888420f1d734dfe7d">pcl::MovingLeastSquares::getClassName</a></div><div class="ttdeci">std::string getClassName() const</div><div class="ttdoc">Abstract class get name method.</div><div class="ttdef"><b>Definition:</b> mls.h:524</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_ab0865f62d90c9fb0f45dd96e587fe84e"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#ab0865f62d90c9fb0f45dd96e587fe84e">pcl::MovingLeastSquares::setSearchMethod</a></div><div class="ttdeci">void setSearchMethod(const KdTreePtr &amp;tree)</div><div class="ttdoc">Provide a pointer to the search object.</div><div class="ttdef"><b>Definition:</b> mls.h:132</div></div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_ae27440d95b1fc5568b2ec820302654a4"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#ae27440d95b1fc5568b2ec820302654a4">pcl::MovingLeastSquares::performProcessing</a></div><div class="ttdeci">virtual void performProcessing(PointCloudOut &amp;output)</div><div class="ttdoc">Abstract surface reconstruction method.</div><div class="ttdef"><b>Definition:</b> mls.hpp:466</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_acceb20854934f4cf77e266eb5a44d4f0"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">pcl::PCLBase&lt; PointInT &gt;::initCompute</a></div><div class="ttdeci">bool initCompute()</div><div class="ttdoc">This method should get called before starting the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:139</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_afc426c4eebb94b7734d4fa556bff1420"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">pcl::PCLBase&lt; PointInT &gt;::deinitCompute</a></div><div class="ttdeci">bool deinitCompute()</div><div class="ttdoc">This method should get called after finishing the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:174</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_kd_tree_html"><div class="ttname"><a href="classpcl_1_1search_1_1_kd_tree.html">pcl::search::KdTree</a></div><div class="ttdoc">search::KdTree is a wrapper class which inherits the pcl::KdTree class for performing search function...</div><div class="ttdef"><b>Definition:</b> kdtree.h:63</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_organized_neighbor_html"><div class="ttname"><a href="classpcl_1_1search_1_1_organized_neighbor.html">pcl::search::OrganizedNeighbor</a></div><div class="ttdoc">OrganizedNeighbor is a class for optimized nearest neigbhor search in organized point clouds.</div><div class="ttdef"><b>Definition:</b> organized.h:63</div></div>
<div class="ttc" id="astructpcl_1_1traits_1_1field_list_html"><div class="ttname"><a href="structpcl_1_1traits_1_1field_list.html">pcl::traits::fieldList</a></div><div class="ttdef"><b>Definition:</b> point_traits.h:177</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0e2f25248f7f01a111763877698e06e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e2f25248f7f01a111763877698e06e4">&#9670;&nbsp;</a></span>projectPointToMLSSurface()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::projectPointToMLSSurface </td>
          <td>(</td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>u_disp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>v_disp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>u_axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>v_axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>n_axis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Vector3d &amp;&#160;</td>
          <td class="paramname"><em>mean</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>curvature</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::VectorXd &amp;&#160;</td>
          <td class="paramname"><em>c_vec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_neighbors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">PointOutT &amp;&#160;</td>
          <td class="paramname"><em>result_point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_normal.html">pcl::Normal</a> &amp;&#160;</td>
          <td class="paramname"><em>result_normal</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Fits a point (sample point) given in the local plane coordinates of an input point (query point) to the MLS surface of the input point </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">u_disp</td><td>the u coordinate of the sample point in the local plane of the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">v_disp</td><td>the v coordinate of the sample point in the local plane of the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">u_axis</td><td>the axis corresponding to the u-coordinates of the local plane of the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">v_axis</td><td>the axis corresponding to the v-coordinates of the local plane of the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">n_axis</td><td></td></tr>
    <tr><td class="paramdir"></td><td class="paramname">mean</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">curvature</td><td>the curvature of the surface at the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">c_vec</td><td>the coefficients of the polynomial fit on the MLS surface of the query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">num_neighbors</td><td>the number of neighbors of the query point in the input cloud </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_point</td><td>the absolute 3D position of the resulting projected point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">result_normal</td><td>the normal of the resulting projected point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;{</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;  <span class="keywordtype">double</span> n_disp = 0.0f;</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;  <span class="keywordtype">double</span> d_u = 0.0f, d_v = 0.0f;</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;  <span class="comment">// HARDCODED 5*nr_coeff_ to guarantee that the computed polynomial had a proper point set basis</span></div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a> &amp;&amp; num_neighbors &gt;= 5*<a class="code" href="classpcl_1_1_moving_least_squares.html#aca9f46399d7e0d6bfb08b9d6ffbb58d1">nr_coeff_</a> &amp;&amp; pcl_isfinite (c_vec[0]))</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;  {</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="comment">// Compute the displacement along the normal using the fitted polynomial</span></div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    <span class="comment">// and compute the partial derivatives needed for estimating the normal</span></div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    <span class="keywordtype">int</span> j = 0;</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordtype">float</span> u_pow = 1.0f, v_pow = 1.0f, u_pow_prev = 1.0f, v_pow_prev = 1.0f;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ui = 0; ui &lt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a>; ++ui)</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    {</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;      v_pow = 1;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> vi = 0; vi &lt;= <a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> - ui; ++vi)</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;      {</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <span class="comment">// Compute displacement along normal</span></div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        n_disp += u_pow * v_pow * c_vec[j++];</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160; </div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <span class="comment">// Compute partial derivatives</span></div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <span class="keywordflow">if</span> (ui &gt;= 1)</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;          d_u += c_vec[j-1] * ui * u_pow_prev * v_pow;</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        <span class="keywordflow">if</span> (vi &gt;= 1)</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;          d_v += c_vec[j-1] * vi * u_pow * v_pow_prev;</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160; </div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        v_pow_prev = v_pow;</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        v_pow *= v_disp;</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      }</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;      u_pow_prev = u_pow;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      u_pow *= u_disp;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    }</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;  }</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160; </div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;  result_point.x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (mean[0] + u[0] * u_disp + v[0] * v_disp + plane_normal[0] * n_disp);</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;  result_point.y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (mean[1] + u[1] * u_disp + v[1] * v_disp + plane_normal[1] * n_disp);</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  result_point.z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (mean[2] + u[2] * u_disp + v[2] * v_disp + plane_normal[2] * n_disp);</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160; </div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;  Eigen::Vector3d normal = plane_normal - d_u * u - d_v * v;</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;  normal.normalize ();</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160; </div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;  result_normal.normal_x = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[0]);</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;  result_normal.normal_y = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[1]);</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;  result_normal.normal_z = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (normal[2]);</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;  result_normal.curvature = curvature;</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8450a26f10b00753056f01eef9042c1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8450a26f10b00753056f01eef9042c1f">&#9670;&nbsp;</a></span>searchForNeighbors()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::searchForNeighbors </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Search for the closest nearest neighbors of a given point using a radius search </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>the index of the query point </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>the resultant vector of indices representing the k-nearest neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sqr_distances</td><td>the resultant squared distances from the query point to the k-nearest neighbors </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;      {</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_moving_least_squares.html#adaf7406e16a85ba21c0c100d8d0d95e3">search_method_</a> (index, <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a>, indices, sqr_distances));</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_moving_least_squares_html_adaf7406e16a85ba21c0c100d8d0d95e3"><div class="ttname"><a href="classpcl_1_1_moving_least_squares.html#adaf7406e16a85ba21c0c100d8d0d95e3">pcl::MovingLeastSquares::search_method_</a></div><div class="ttdeci">SearchMethod search_method_</div><div class="ttdoc">The search method template for indices.</div><div class="ttdef"><b>Definition:</b> mls.h:306</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5983412b9e7efee57f491d1c54da21d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5983412b9e7efee57f491d1c54da21d6">&#9670;&nbsp;</a></span>setComputeNormals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setComputeNormals </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>compute_normals</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set whether the algorithm should also store the normals computed </p>
<dl class="section note"><dt>注解</dt><dd>This is optional, but need a proper output cloud type </dd></dl>
<div class="fragment"><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#acd4484eb2270ad8ce06550e51c13a4d1">compute_normals_</a> = compute_normals; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a08fd0701e8ab705e17c2704ae64601c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08fd0701e8ab705e17c2704ae64601c9">&#9670;&nbsp;</a></span>setDilationIterations()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setDilationIterations </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>iterations</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the number of dilation steps of the voxel grid </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the VOXEL_GRID_DILATION upsampling method </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">iterations</td><td>the number of dilation iterations </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">dilation_iteration_num_</a> = iterations; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a91ca6567348b72285196be7c28618182"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91ca6567348b72285196be7c28618182">&#9670;&nbsp;</a></span>setDilationVoxelSize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setDilationVoxelSize </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>voxel_size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the voxel size for the voxel grid </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the VOXEL_GRID_DILATION upsampling method </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">voxel_size</td><td>the edge length of a cubic voxel in the voxel grid </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">voxel_size_</a> = voxel_size; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5c4b8a31a83259d20754e5cc57cb85ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c4b8a31a83259d20754e5cc57cb85ae">&#9670;&nbsp;</a></span>setPointDensity()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setPointDensity </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>desired_num_points_in_radius</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the parameter that specifies the desired number of points within the search radius </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of RANDOM_UNIFORM_DENSITY upsampling </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">desired_num_points_in_radius</td><td>the desired number of points in the output cloud in a sphere of radius <a class="el" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> around each point </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">desired_num_points_in_radius_</a> = desired_num_points_in_radius; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aec89a5e1f9001476eb1fc2b8db63d650"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec89a5e1f9001476eb1fc2b8db63d650">&#9670;&nbsp;</a></span>setPolynomialFit()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setPolynomialFit </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>polynomial_fit</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets whether the surface and normal are approximated using a polynomial, or only via tangent estimation. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">polynomial_fit</td><td>set to true for polynomial fit </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a46e617220222b6d402ebadad8b21cdf3">polynomial_fit_</a> = polynomial_fit; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3127676a2bb32a32164a181bfbbf7589"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3127676a2bb32a32164a181bfbbf7589">&#9670;&nbsp;</a></span>setPolynomialOrder()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setPolynomialOrder </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>order</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the order of the polynomial to be fit. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">order</td><td>the order of the polynomial </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a234ecea03abec8ecb99a5b5f871e7c9e">order_</a> = order; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab0865f62d90c9fb0f45dd96e587fe84e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0865f62d90c9fb0f45dd96e587fe84e">&#9670;&nbsp;</a></span>setSearchMethod()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setSearchMethod </td>
          <td>(</td>
          <td class="paramtype">const KdTreePtr &amp;&#160;</td>
          <td class="paramname"><em>tree</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the search object. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">tree</td><td>a pointer to the spatial search object. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      {</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a> = tree;</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="comment">// Declare the search locator definition</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        int (KdTree::*radiusSearch)(<span class="keywordtype">int</span> index, <span class="keywordtype">double</span> radius, std::vector&lt;int&gt; &amp;k_indices, std::vector&lt;float&gt; &amp;k_sqr_distances, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_nn) <span class="keyword">const</span> = &amp;<a class="code" href="classpcl_1_1search_1_1_search.html#a441f41e648d284d68e1f2015d40f5e7c">KdTree::radiusSearch</a>;</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <a class="code" href="classpcl_1_1_moving_least_squares.html#adaf7406e16a85ba21c0c100d8d0d95e3">search_method_</a> = boost::bind (radiusSearch, boost::ref (<a class="code" href="classpcl_1_1_moving_least_squares.html#a57adb49b99d770e7d32de6e64c872b4a">tree_</a>), _1, _2, _3, _4, 0);</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_search_html_a441f41e648d284d68e1f2015d40f5e7c"><div class="ttname"><a href="classpcl_1_1search_1_1_search.html#a441f41e648d284d68e1f2015d40f5e7c">pcl::search::Search&lt; PointInT &gt;::radiusSearch</a></div><div class="ttdeci">virtual int radiusSearch(const PointInT &amp;point, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const=0</div><div class="ttdoc">Search for all the nearest neighbors of the query point in a given radius.</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae5e4d16c7aae631ef02bf1ee843bd55e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5e4d16c7aae631ef02bf1ee843bd55e">&#9670;&nbsp;</a></span>setSearchRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setSearchRadius </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the sphere radius that is to be used for determining the k-nearest neighbors used for fitting. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the sphere radius that is to contain all k-nearest neighbors </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>Calling this method resets the squared Gaussian parameter to radius * radius ! </dd></dl>
<div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> = radius; <a class="code" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a> = <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a> * <a class="code" href="classpcl_1_1_moving_least_squares.html#a36c2086cb13c37080daba5009f57f484">search_radius_</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a026b12106161eba174b69ef67d769950"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a026b12106161eba174b69ef67d769950">&#9670;&nbsp;</a></span>setSqrGaussParam()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setSqrGaussParam </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>sqr_gauss_param</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the parameter used for distance based weighting of neighbors (the square of the search radius works best in general). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">sqr_gauss_param</td><td>the squared Gaussian parameter </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a3c2a7bb303cf17f5fa5e3360e059e8e7">sqr_gauss_param_</a> = sqr_gauss_param; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac29ad97b98353d64ce64e2ff924f7d20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac29ad97b98353d64ce64e2ff924f7d20">&#9670;&nbsp;</a></span>setUpsamplingMethod()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setUpsamplingMethod </td>
          <td>(</td>
          <td class="paramtype">UpsamplingMethod&#160;</td>
          <td class="paramname"><em>method</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the upsampling method to be used </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">method</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>Options are: * NONE - no upsampling will be done, only the input points will be projected to their own MLS surfaces<ul>
<li>DISTINCT_CLOUD - will project the points of the distinct cloud to the closest point on the MLS surface</li>
<li>SAMPLE_LOCAL_PLANE - the local plane of each input point will be sampled in a circular fashion using the <a class="el" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a> and the <a class="el" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a> parameters</li>
<li>RANDOM_UNIFORM_DENSITY - the local plane of each input point will be sampled using an uniform random distribution such that the density of points is constant throughout the cloud - given by the <a class="el" href="classpcl_1_1_moving_least_squares.html#ab4a818c9ec101ecfcf970c6165b201c0">desired_num_points_in_radius_</a> parameter</li>
<li>VOXEL_GRID_DILATION - the input cloud will be inserted into a voxel grid with voxels of size <a class="el" href="classpcl_1_1_moving_least_squares.html#afbde287f8eb3329c22d0246db630ad58">voxel_size_</a>; this voxel grid will be dilated <a class="el" href="classpcl_1_1_moving_least_squares.html#aea681e491f0d8671dbd6e36ccd8f68b5">dilation_iteration_num_</a> times and the resulting points will be projected to the MLS surface of the closest point in the input cloud; the result is a point cloud with filled holes and a constant point density </li>
</ul>
</dd></dl>
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a9237259f71cf6491ff1f314eddb3b5d0">upsample_method_</a> = method; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8efa7671c4b24700c2f22f63affdce9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8efa7671c4b24700c2f22f63affdce9b">&#9670;&nbsp;</a></span>setUpsamplingRadius()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setUpsamplingRadius </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the radius of the circle in the local point plane that will be sampled </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the circle </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#aa2346b81e98ac4a83b65613b4f5dac9a">upsampling_radius_</a> = radius; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac2c814527e15d4d3ff9a5ba5864b842d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2c814527e15d4d3ff9a5ba5864b842d">&#9670;&nbsp;</a></span>setUpsamplingStepSize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::setUpsamplingStepSize </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>step_size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the step size for the local plane sampling </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">step_size</td><td>the step size </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;{ <a class="code" href="classpcl_1_1_moving_least_squares.html#a7144ad759e58dca299c0ab5f8c6259b9">upsampling_step_</a> = step_size; }</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="ab4a818c9ec101ecfcf970c6165b201c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4a818c9ec101ecfcf970c6165b201c0">&#9670;&nbsp;</a></span>desired_num_points_in_radius_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::desired_num_points_in_radius_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Parameter that specifies the desired number of points within the search radius </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of RANDOM_UNIFORM_DENSITY upsampling </dd></dl>

</div>
</div>
<a id="afb0395459bc94fa4c1990b47d471a4bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb0395459bc94fa4c1990b47d471a4bc">&#9670;&nbsp;</a></span>mls_results_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="structpcl_1_1_moving_least_squares_1_1_m_l_s_result.html">MLSResult</a>&gt; <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::mls_results_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores the MLS result for each point in the input cloud </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of VOXEL_GRID_DILATION or DISTINCT_CLOUD upsampling </dd></dl>

</div>
</div>
<a id="a46e617220222b6d402ebadad8b21cdf3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46e617220222b6d402ebadad8b21cdf3">&#9670;&nbsp;</a></span>polynomial_fit_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::polynomial_fit_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>True if the surface and normal be approximated using a polynomial, false if tangent estimation is sufficient. </p>

</div>
</div>
<a id="ad7623ffdbf0db9c66b246b5499c07706"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7623ffdbf0db9c66b246b5499c07706">&#9670;&nbsp;</a></span>rng_uniform_distribution_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_ptr&lt;boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_real&lt;float&gt; &gt; &gt; <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::rng_uniform_distribution_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Random number generator using an uniform distribution of floats </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of RANDOM_UNIFORM_DENSITY upsampling </dd></dl>

</div>
</div>
<a id="aa2346b81e98ac4a83b65613b4f5dac9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2346b81e98ac4a83b65613b4f5dac9a">&#9670;&nbsp;</a></span>upsampling_radius_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::upsampling_radius_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Radius of the circle in the local point plane that will be sampled </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>

</div>
</div>
<a id="a7144ad759e58dca299c0ab5f8c6259b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7144ad759e58dca299c0ab5f8c6259b9">&#9670;&nbsp;</a></span>upsampling_step_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointInT , typename PointOutT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_moving_least_squares.html">pcl::MovingLeastSquares</a>&lt; PointInT, PointOutT &gt;::upsampling_step_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Step size for the local plane sampling </p>
<dl class="section note"><dt>注解</dt><dd>Used only in the case of SAMPLE_LOCAL_PLANE upsampling </dd></dl>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>surface/include/pcl/surface/<a class="el" href="mls_8h_source.html">mls.h</a></li>
<li>surface/include/pcl/surface/impl/<a class="el" href="mls_8hpp_source.html">mls.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_moving_least_squares.html">MovingLeastSquares</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
